Autonomous vehicle simulation system for analyzing motion planners

ABSTRACT

An autonomous vehicle simulation system for analyzing motion planners is disclosed. A particular embodiment includes: receiving map data corresponding to a real world driving environment; obtaining perception data and configuration instructions and data including pre-defined parameters and executables defining a specific driving behavior for each of a plurality of simulated dynamic vehicles; generating simulated perception data for each of the plurality of simulated dynamic vehicles based on the map data, the perception data, and the configuration instructions and data; receiving vehicle control messages from an autonomous vehicle control system; and simulating the operation and behavior of a real world autonomous vehicle based on the vehicle control messages received from the autonomous vehicle control system.

COPYRIGHT NOTICE

A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the U.S. Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever. The following notice applies to the disclosure herein and to the drawings that form a part of this document: Copyright 2016-2017, TuSimple, All Rights Reserved.

TECHNICAL FIELD

This patent document pertains generally to tools (systems, apparatuses, methodologies, computer program products, etc.) for autonomous driving simulation systems, trajectory planning, vehicle control systems, and autonomous driving systems, and more particularly, but not by way of limitation, to an autonomous vehicle simulation system for analyzing motion planners.

BACKGROUND

An autonomous vehicle is often configured to follow a trajectory based on a computed driving path generated by a motion planner. However, when variables such as obstacles (e.g., other dynamic vehicles) are present on the driving path, the autonomous vehicle must use its motion planner to modify the computed driving path and perform corresponding control operations so the vehicle may be safely driven by changing the driving path to avoid the obstacles. Motion planners for autonomous vehicles can be very difficult to build and configure. The logic in the motion planner must be able to anticipate, detect, and react to a variety of different driving scenarios, such as the actions of the dynamic vehicles in proximity to the autonomous vehicle. In most cases, it is not feasible and even dangerous to test autonomous vehicle motion planners in real world driving environments. As such, simulators can be used to test autonomous vehicle motion planners. However, to be effective in testing autonomous vehicle motion planners, these simulators must be able to realistically model the behaviors of the simulated dynamic vehicles in proximity to the autonomous vehicle in a variety of different scenarios. Conventional simulators have been unable to overcome the challenges of modeling driving behaviors of the simulated proximate dynamic vehicles to make the behaviors of the simulated dynamic vehicles as similar to real driver behaviors as possible. Moreover, conventional simulators have been unable to achieve a level of efficiency and capacity necessary to provide an acceptable test tool for autonomous vehicle motion planners.

SUMMARY

An autonomous vehicle simulation system for analyzing motion planners is disclosed herein. Specifically, the present disclosure describes an autonomous vehicle simulation system to generate simulated map data and simulated perception data with simulated dynamic vehicles having various driving behaviors to test, evaluate, or otherwise analyze autonomous vehicle motion planning systems, which can be used in real autonomous vehicles in actual driving environments. The simulated dynamic vehicles (also denoted herein as non-player characters or NPC vehicles) generated by the simulation system of various example embodiments described herein can model the vehicle behaviors that would be performed by actual vehicles in the real world, including lane change, overtaking, acceleration behaviors, and the like. The autonomous vehicle simulation system of various example embodiments can generate two dimensional (2D) or three dimensional (3D) simulated map data to test the map processing capabilities of an autonomous vehicle system. The autonomous vehicle simulation system can also generate a 3D simulation of an autonomous vehicle that can receive and process autonomous vehicle control messages from an autonomous vehicle control system just like a real world autonomous vehicle would process the control messages. During the execution of a simulation scenario, the autonomous vehicle simulation system can collect analytics data, vehicle state information, and recorded motion data related to the performance of the autonomous vehicle system with the control module and motion planner therein. The autonomous vehicle simulation system can further enable the playback of the recorded motion data to highlight the analysis of the performance of the control module and motion planner in various driving and traffic scenarios. The autonomous vehicle simulation system can further allow the modification of the motion planner and a restart of the simulation at any point in a test scenario using the recorded motion data. Additionally, the autonomous vehicle simulation system can read a record created from physical experiments and use the record to generate simulated perception data that is the same or equivalent to the physical experiment record. Thus, an autonomous vehicle motion planner can be tested with realistic simulated data from physical experiments.

BRIEF DESCRIPTION OF THE DRAWINGS

The various embodiments are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings in which:

FIG. 1 illustrates the elements of the real world driving environment and the data used and produced by an autonomous vehicle system for controlling an autonomous vehicle in the real world driving environment;

FIG. 2 illustrates the basic components of the autonomous vehicle simulation system of an example embodiment and the interaction of the autonomous vehicle simulation system with the elements of the real world driving environment and the autonomous vehicle system for controlling an autonomous vehicle in the real world driving environment;

FIG. 3 illustrates the 2D/3D map data simulation module of the autonomous vehicle simulation system of an example embodiment;

FIG. 4 illustrates the dynamic vehicle simulation module of the autonomous vehicle simulation system of an example embodiment;

FIG. 5 illustrates the components of the dynamic vehicle simulation module of an example embodiment;

FIG. 6 illustrates the 3D autonomous vehicle simulation module, the autonomous vehicle analytics module, and the autonomous vehicle motion recording and playback module of the autonomous vehicle simulation system of an example embodiment;

FIG. 7 is a process flow diagram illustrating an example embodiment of an autonomous vehicle simulation system for analyzing motion planners; and

FIG. 8 shows a diagrammatic representation of machine in the example form of a computer system within which a set of instructions when executed may cause the machine to perform any one or more of the methodologies discussed herein.

DETAILED DESCRIPTION

In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the various embodiments. It will be evident, however, to one of ordinary skill in the art that the various embodiments may be practiced without these specific details.

An autonomous vehicle simulation system for analyzing motion planners is disclosed herein. Specifically, the present disclosure describes an autonomous vehicle simulation system to generate simulated map data and simulated perception data with simulated dynamic vehicles having various driving behaviors to test, evaluate, or otherwise analyze autonomous vehicle motion planning systems, which can be used in real autonomous vehicles in actual driving environments. The simulated dynamic vehicles (also denoted herein as non-player characters or NPC vehicles) generated by the simulation system of various example embodiments described herein can model the vehicle behaviors that would be performed by actual vehicles in the real world, including lane change, overtaking, acceleration behaviors, and the like. The autonomous vehicle simulation system of various example embodiments can generate two dimensional (2D) or three dimensional (3D) simulated map data to test the map processing capabilities of an autonomous vehicle system. The autonomous vehicle simulation system can also generate a 3D simulation of an autonomous vehicle that can receive and process autonomous vehicle control messages from an autonomous vehicle control system just like a real world autonomous vehicle would process the control messages. During the execution of a simulation scenario, the autonomous vehicle simulation system can collect analytics data, vehicle state information, and recorded motion data related to the performance of the autonomous vehicle system with the control module and motion planner therein. The autonomous vehicle simulation system can further enable the playback of the recorded motion data to highlight the analysis of the performance of the control module and motion planner in various driving and traffic scenarios. The autonomous vehicle simulation system can further allow the modification of the motion planner and a restart of the simulation at any point in a test scenario using the recorded motion data. Additionally, the autonomous vehicle simulation system can read a record created from physical experiments and use the record to generate simulated perception data that is the same or equivalent to the physical experiment record. Thus, an autonomous vehicle motion planner can be tested with realistic simulated data from physical experiments.

FIG. 1 illustrates the elements of the real world driving environment 201 and the data used and produced by an autonomous vehicle system 301 for controlling an autonomous vehicle 230 in the real world driving environment 201. In other words, FIG. 1 illustrates how an autonomous vehicle system 301 interacts with the real world driving environment 201. As shown, an autonomous vehicle system 301 can use a map processing module 310 to gather map information 210 from the real world driving environment 201, the map information 210 being related to roadways, geographical locations and objects, and other elements in the real world driving environment 201. The map processing module 310 can receive the map information 210 as a set of map data messages that includes digital information and representations of elements mapped in the real world driving environment 201. The various modules and systems disclosed in example embodiments can communicate with configured messages, which improves the flexibility and modularity of the system. The map processing module 310 can use the map information 210 for navigation, motion metrics, orientation, motion planning, user/driver interfaces, and the like.

As also shown in FIG. 1, the autonomous vehicle system 301 can include a perception data processing module 320 to gather perception data 215 from the real world driving environment. The perception data 215 can include data from various vehicle sensors, such as image generating devices (e.g., cameras), light amplification by stimulated emission of radiation (laser) devices, light detection and ranging (LIDAR) devices, global positioning system (GPS) devices, sound navigation and ranging (sonar) devices, radio detection and ranging (radar) devices, other distance measuring systems, and the like. The perception data 215 can include data related to objects detected by the vehicle sensors, the objects including proximate vehicles 220 near the autonomous vehicle, pedestrians, obstacles or other elements detected by the vehicle sensors in the real world driving environment. The perception data 215 is described in more detail below. The perception data processing module 320 can receive the perception data 215 as a set of perception data messages that includes digital information and representations of sensor data captured from the real world environment. In an example embodiment, the perception data processing module 320 can use the perception data 215 for motion planning and navigation, among other uses.

The autonomous vehicle system 301, shown in FIG. 1, can further include a motion planning module 330 and an autonomous vehicle control module 340. The motion planning module 330 can use the map data 210 and the perception data 215 to generate a trajectory and acceleration/speed for the autonomous vehicle that transitions the vehicle toward a desired destination while avoiding obstacles, including other proximate vehicles 220. The autonomous vehicle control module 340 can use the trajectory and acceleration/speed information generated by the motion planning module 330 to generate autonomous vehicle control messages that can manipulate the various control subsystems in a real world autonomous vehicle 230, such as throttle, brake, steering, and the like. The manipulation the various control subsystems in the real world autonomous vehicle 230 can cause the autonomous vehicle 230 to traverse the trajectory with the acceleration/speed as generated by the motion planning module 330. The use of motion planners and control modules in autonomous vehicles is well-known to those of ordinary skill in the art.

FIG. 2 illustrates the basic components of the autonomous vehicle simulation system 401 of an example embodiment and the interaction of the autonomous vehicle simulation system 401 with the elements of the real world driving environment 201 and the autonomous vehicle system 301 for controlling an autonomous vehicle in the real world driving environment 201. As shown in FIG. 2, the autonomous vehicle simulation system 401 of an example embodiment can be interposed between the real world driving environment 201 and the autonomous vehicle system 301 as described above. As a result, the autonomous vehicle system 301 can receive the same types of data from the autonomous vehicle simulation system 401 as otherwise received from the real world driving environment 201. The main difference is that the autonomous vehicle simulation system 401 can produce simulated map data messages and/or simulated perception data messages in place of the real world map data 210 and the real world perception data 215, including the real world proximate vehicle perception data 220. The autonomous vehicle simulation system 401 can also produce simulated proximate dynamic vehicles as part of the simulated perception data messages. The simulated map data messages and/or simulated perception data messages produced by the autonomous vehicle simulation system 401 can be derived from or based on the real world map and perception data received from the real world driving environment 201. The autonomous vehicle simulation system 401 of various example embodiments can generate two dimensional (2D) or three dimensional (3D) simulated map data to test the map processing capabilities of an autonomous vehicle system. Alternatively, the simulated map data messages and/or simulated perception data messages produced by the autonomous vehicle simulation system 401 can be completely simulated and independently generated from the real world driving environment 201. As another alternative, the real world map data 210 and the perception data 215 received from the real world driving environment 201 can be passed directly through the autonomous vehicle simulation system 401 to the autonomous vehicle system 301, making the autonomous vehicle simulation system 401 completely transparent to the real world driving environment 201 and the autonomous vehicle system 301. The autonomous vehicle simulation system 401 can thus be configured to produce simulated map data messages and simulated perception data messages that may include a configured combination of real world data and/or simulated data, including a complete absence of real world data or simulated data. In this manner, the autonomous vehicle simulation system 401 can be highly flexible and generally transparent to the autonomous vehicle system 301 with which it is used. Similarly, the autonomous vehicle system 301 can produce the same types of autonomous vehicle control messages output to the autonomous vehicle simulation system 401 as otherwise output to the real world autonomous vehicle 230 in the real world driving environment 201. These autonomous vehicle control messages generated by the autonomous vehicle system 301 can be received by the autonomous vehicle simulation system 401 and analyzed to determine the validity and appropriateness of the control messages under the circumstances presented by the simulated map data and the simulated perception data. The autonomous vehicle simulation system 401 can generate metrics or analytics data corresponding to the analysis of the autonomous vehicle control messages generated by the autonomous vehicle system 301 and/or the motion planning module 330 therein. The autonomous vehicle simulation system 401 can also generate vehicle motion recording data corresponding to the autonomous vehicle control messages generated by the autonomous vehicle system 301. The vehicle motion recording data can capture the motion and behavior of a simulated autonomous vehicle as controlled using the autonomous vehicle control messages generated by the autonomous vehicle system 301. The vehicle motion recording data can include data corresponding to the map data and perception data synchronized with the associated autonomous vehicle control messages. As a result, the vehicle motion recording data can record a time sequenced set of map data, perception data and corresponding vehicle control messages produced by the autonomous vehicle system 301 and/or the motion planning module 330 therein. Thus, the autonomous vehicle system 301 can be stimulated by the autonomous vehicle simulation system 401 with specifically configured inputs and the resulting output produced by the autonomous vehicle system 301 can be analyzed, recorded, and validated. Moreover, the vehicle motion recording data can be retained and played back to conduct further analysis of the operation of the autonomous vehicle system 301 and the motion planning module or motion planner 330 therein. The autonomous vehicle simulation system 401 can enable the playback of the recorded vehicle motion data to highlight or isolate the analysis of the performance of the vehicle control module 340 and motion planner 330 in various driving and traffic scenarios. The autonomous vehicle simulation system 401 can further allow the modification of the motion planner 330 and a restart of the simulation at any point in a test scenario using the recorded vehicle motion data. Additionally, the autonomous vehicle simulation system 401 can read a record created from physical experiments and use the record to generate simulated perception data that is the same or equivalent to the physical experiment record. Therefore, the autonomous vehicle simulation system 401 of the example embodiments disclosed herein provides a versatile simulation system for testing an autonomous vehicle control system or motion planner. The autonomous vehicle simulation system 401 can directly simulate real world objects to provide a highly realistic environment for an autonomous vehicle system. The autonomous vehicle simulation system 401 can be used for individual subsystem testing (e.g., map, motion planning, control, etc.), or for a more robust integration test that includes all autonomous vehicle subsystems. The autonomous vehicle simulation system 401 can be used for autonomous vehicle control system development and parameters tuning, Additionally, the autonomous vehicle simulation system 401 can be used as a Continuous Integration (CI) system that automatically spots issues or bugs. The details of the structure and operation of the autonomous vehicle simulation system 401 of an example embodiment are disclosed below in connection with FIGS. 3 through 6.

FIG. 3 illustrates the 2D/3D map data simulation module 405 of the autonomous vehicle simulation system 401 of an example embodiment. The 2D/3D map data simulation module 405 can be executed by a data processor 471 of the autonomous vehicle simulation system 401. As shown in FIG. 3, the 2D/3D map data simulation module 405 can gather 2D and/or 3D map information 210 from the real world driving environment 201, the map information 210 being related to roadways, geographical locations and objects, and other elements in the real world driving environment. The 2D/3D map data simulation module 405 can receive the map information 210 as a set of map data messages that includes digital information and representations of elements mapped in the real world driving environment 201. The 2D/3D map data simulation module 405 can use the map information 210 for generating simulated map data messages corresponding to the map data that the map processing module 310 of the autonomous vehicle system 301 would use for navigation, motion metrics, orientation, motion planning, user/driver interfaces, and the like. As described above, the simulated map data messages generated by the 2D/3D map data simulation module 405 can include only real world map data, only purely simulated map data, or any combinations or portions of real or simulated map data. Simulated map configuration data 407, stored in a memory system 472 of the autonomous vehicle simulation system 401, can include parameters, data, and instructions used to configure the operation of the 2D/3D map data simulation module 405. The simulated map data messages generated by the 2D/3D map data simulation module 405 can be communicated to the autonomous vehicle map processing module 310 of the autonomous vehicle system 301. The autonomous vehicle system 301 can process the simulated map data messages just as if the autonomous vehicle system 301 had received the map data messages directly from the real world driving environment 201.

FIG. 4 illustrates the dynamic vehicle simulation module 420 of the autonomous vehicle simulation system 401 of an example embodiment. FIG. 5 illustrates the components of the dynamic vehicle simulation module 420 of an example embodiment. Referring to FIGS. 4 and 5, the diagrams illustrate some of the components of an example embodiment of the autonomous vehicle simulation system 401 and the dynamic vehicle simulation module 420 therein. In particular, the dynamic vehicle simulation module 420 can include a perception data collection module 404. The perception data collection module 404 can be executed by a data processor 471 of the autonomous vehicle simulation system 401. The perception data collection module 404 can include an array of interfaces for receiving perception data associated with the real world driving environment 201 from a plurality of perception information sensing devices or perception data sensors. The perception data sensors may include image generating devices (e.g., cameras), light amplification by stimulated emission of radiation (laser) devices, light detection and ranging (LIDAR) devices, global positioning system (GPS) devices, sound navigation and ranging (sonar) devices, radio detection and ranging (radar) devices, other distance measuring systems, and the like. The perception data gathered by the perception data sensors at various traffic locations can include traffic or vehicle image data, roadway data, environmental data, distance data from LIDAR or radar devices, and other sensor information received from the perception data sensors positioned in the real world driving environment 201 adjacent to particular roadways (e.g., monitored locations) or installed on stationary test vehicles. Additionally, the perception data sensors can include perception data gathering devices installed in or on moving test vehicles being navigated through pre-defined routings in the real world driving environment 201 or location of interest. The the perception data sensors can also include perception data gathering devices installed in or on aerial drones flying above a location of interest. The perception data can include data from which a presence, position, and velocity of neighboring vehicles in the vicinity of or proximate to a host vehicle, autonomous vehicle, or simulated vehicle can be obtained or calculated.

The perception data collection module 404 can collect actual trajectories of vehicles under different scenarios and different driver behaviors. The different scenarios can correspond to different locations, different traffic patterns, different environmental conditions, and the like. The scenarios can be represented, for example, by an occupancy grid, a collection of vehicle states on a map, or a graphical representation, such as a top-down image of one or more areas of interest. The driver behaviors can correspond to a driver's short term driving activity, such as changing lanes to the left or right, overtaking other vehicles, accelerating/decelerating, merging to/from a ramp, making left or right turn at an intersection, making a U-turn, and the like. The driver behaviors can also correspond to a set of driver or vehicle control actions to accomplish the particular short term driving activity.

The image data and other perception data collected by the perception data collection module 404 reflects truly realistic, real-world traffic environment information related to the locations or routings, the scenarios, and the driver behaviors being monitored in the real world driving environment 201. Using the standard capabilities of well-known data collection devices, the gathered traffic and vehicle image data and other perception or sensor data can be wirelessly transferred (or otherwise transferred) to a data processor of a standard computing system, upon which the perception data collection module 404 can be executed. Alternatively, the gathered traffic and vehicle image data and other perception or sensor data can be stored in a memory device at the monitored location or in the test vehicle and transferred later to the data processor of the standard computing system. The traffic and vehicle image data and other perception or sensor data, and the driver behavior data gathered or calculated by the perception data collection module 404 can be used to generate simulated proximate dynamic vehicles for a simulation environment implemented by the autonomous vehicle simulation system 401 as described in more detail below.

Referring again FIGS. 4 and 5, additional components of the autonomous vehicle simulation system 401 are illustrated. As described above, the autonomous vehicle simulation system 401 can gather the perception data collected by the perception data collection module 404. This perception data can be used in a simulation environment, produced by the autonomous vehicle simulation system 401, to create corresponding simulations of proximate dynamic vehicles or object trajectories in the simulation environment. As a result, the example embodiments use the perception data collection module 404 to collect perception data that can be used to infer corresponding human driving behaviors. Then, the example embodiments can use the autonomous vehicle simulation system 401 in the simulation environment to simulate proximate dynamic vehicles with configurable human driving behaviors based in part on the collected perception data.

Referring still FIGS. 4 and 5, the autonomous vehicle simulation system 401 can include a dynamic vehicle configuration module 406, a set of dynamic vehicle configuration data 408, and a dynamic vehicle processing module 410. The dynamic vehicle configuration module 406 and the dynamic vehicle processing module 410 can be executed by a data processor 471 of the autonomous vehicle simulation system 401. The dynamic vehicle configuration data 408 can be stored in a memory device or system 472 of the autonomous vehicle simulation system 401. The dynamic vehicle configuration module 406 can be configured to read portions of the pre-defined data retained as the dynamic vehicle configuration data 408 to obtain pre-defined parameters and executables for each of a plurality of dynamic vehicles being simulated by the dynamic vehicle processing module 410, described in more detail below. The pre-defined parameters and executables for each simulated dynamic vehicle constitute configuration instructions and data defining a specific driving behavior for each of a plurality of dynamic vehicles being simulated. The configuration instructions and data enable the dynamic vehicle processing module 410 to generate a simulation of a particular dynamic vehicle with a specific driving behavior. For example, the configuration instructions and data for a particular dynamic vehicle can cause the dynamic vehicle processing module 410 to generate a simulation of the particular dynamic vehicle with an aggressive driving behavior. In the example, the aggressive driving behavior can correspond to a simulated dynamic vehicle that frequently changes lanes, exhibits steep acceleration and deceleration rates, and travels close to other neighboring vehicles. In contrast, the configuration instructions and data for a particular dynamic vehicle can cause the dynamic vehicle processing module 410 to generate a simulation of the particular dynamic vehicle with a conservative driving behavior. In this example, the conservative driving behavior can correspond to a simulated dynamic vehicle that infrequently changes lanes, exhibits moderate acceleration and deceleration rates, and maintains a greater distance from other neighboring vehicles. It will be apparent to those of ordinary skill in the art in view of the disclosure herein that a variety of other specific driving behaviors can be simulated using the configuration instructions and data defined in the dynamic vehicle configuration data 408 and processed by the dynamic vehicle configuration module 406.

The dynamic vehicle simulation module 420 of an example embodiment, as shown in FIG. 5, can receive the perception data from the perception data collection module 404 and the configuration instructions and data for each dynamic vehicle to be simulated. The received perception data can inform the dynamic vehicle processing module 410 of the environment surrounding the particular dynamic vehicle being simulated. For example, the perception data can include information indicative of the presence, position, and velocity of neighboring vehicles in the vicinity of or proximate to a host vehicle, an autonomous vehicle, or simulated dynamic vehicle. The perception data can also include information indicative of the presence and position of obstacles, the location of the available roadways, and other traffic or environmental information. The configuration instructions and data for each dynamic vehicle to be simulated can inform the dynamic vehicle processing module 410 of the specific configurable driving behaviors to be modeled for the particular dynamic vehicle being simulated. Given the perception data and the configuration instructions and data for each dynamic vehicle being simulated, the dynamic vehicle processing module 410 can generate a proposed or target position, speed, and heading for each particular dynamic vehicle being simulated at specific points in time. The proposed or target position, speed, and heading for each simulated dynamic vehicle can be generated based on the received perception data and the specific configuration instructions and data. In an example embodiment, the dynamic vehicle processing module 410 can use a rule-based process and corresponding data structures to determine and generate the target position, speed, and heading corresponding to the specific behavior of each simulated dynamic vehicle based on the configuration instructions and data corresponding to each simulated dynamic vehicle. In the example embodiment, the specific behavior of a simulated dynamic vehicle, as represented in the rule-based process and corresponding data structures, can be modeled using the target position and direction of the simulated dynamic vehicle along with the target speed of the simulated dynamic vehicle. The target position/direction and target speed of the simulated dynamic vehicle correspond to the position and speed of a vehicle that would be expected given the pre-defined dynamic vehicle configuration data 408 as described above. Thus, the target position/direction and target speed of the simulated dynamic vehicle correspond to the pre-configured behavior for a specific simulated dynamic vehicle. Because the target position/direction and target speed of the simulated dynamic vehicle correspond to the pre-configured behavior, the target position/direction and target speed of each simulated dynamic vehicle is likely to be different among the various simulated dynamic vehicles. For example, a particular simulated dynamic vehicle having a pre-configured behavior corresponding to an aggressive driver may be more likely (higher probability) to have a determined target position/direction and target speed associated with a lane change, passing maneuver, sharp turn, or sudden stop. A different simulated dynamic vehicle having a pre-configured behavior corresponding to a conservative driver may be less likely (lower probability) to have a determined target position/direction and target speed associated with a lane change, passing maneuver, sharp turn, or sudden stop. As a result, a target position/direction and target speed of each simulated dynamic vehicle conforming to the configured driving behavior for each simulated dynamic vehicle can be generated by the dynamic vehicle processing module 410. The target position/direction and target speed can be passed or otherwise communicated to a trajectory generator 412 as shown in FIG. 5.

As illustrated in FIG. 5, the trajectory generator 412 can receive the target position/direction and target speed generated by the dynamic vehicle processing module 410 for each simulated dynamic vehicle as described above. The trajectory generator 412 can generate a trajectory to transition a particular simulated dynamic vehicle from its current position/direction and speed to the target position/direction and target speed as generated by the dynamic vehicle processing module 410. In an example embodiment, the trajectory generator 412 can include a path sampler module 414 and a speed sampler module 416. The path sampler module 414 can generate multiple paths or trajectories from the particular simulated dynamic vehicle's current position to the target position. The multiple trajectories enable a selection of a particular trajectory based on the presence of obstacles or the accommodation of other simulation goals, such as safety, fuel-efficiency, and the like. The speed sampler module 416 can generate multiple acceleration profiles to transition the particular simulated dynamic vehicle from its current speed to the target speed. Again, the multiple acceleration profiles enable a selection of a particular acceleration profile based on the presence of obstacles or the accommodation of other simulation goals, such as safety, fuel-efficiency, and the like. The multiple trajectories and multiple acceleration profiles for each simulated dynamic vehicle can be represented as waypoints each having a corresponding position, speed, acceleration, and time. The waypoints generated by the trajectory generator 412 can represent the movements and behaviors of each simulated dynamic vehicle in the simulation environment. As shown in FIG. 5, the trajectory corresponding to each of a plurality of simulated dynamic vehicles can be provided with the simulated perception data messages as an output from the autonomous vehicle simulation system 401 and an input to an autonomous vehicle perception data processing module 320 of the autonomous vehicle system 301. The autonomous vehicle perception data processing module 320 can interface with a motion planner module 330 of the autonomous vehicle system 301 used to generate a trajectory for an autonomous vehicle based on the environment around the autonomous vehicle and the destination or goals of the autonomous vehicle. The environment around the autonomous vehicle can include the presence, position, heading, and speed of proximate vehicles or other objects near the autonomous vehicle. Given the trajectories corresponding to a plurality of simulated dynamic vehicles as provided by the autonomous vehicle simulation system 401, the motion planner module 330 with the autonomous vehicle perception data processing module 320 can be stimulated to react to the presence and behavior of the simulated dynamic vehicles just as the motion planner 330 would react to the presence and behavior of real vehicles in a real world driving environment 201. In this manner, the autonomous vehicle simulation system 401 can be used to produce trajectories corresponding to a plurality of simulated dynamic vehicles, which can be used to stimulate the motion planner 330 of an autonomous vehicle system 301. The trajectories produced by the motion planner 330 in response to the plurality of simulated dynamic vehicles can be analyzed to determine if the motion planner 330 is producing acceptable output. As described above, the behaviors of the simulated dynamic vehicles generated by the autonomous vehicle simulation system 401 can be configured, modified, and specifically tuned to produce a wide range of driving behaviors, environments, scenarios, and tests to exercise the full capabilities of the autonomous vehicle motion planner 330. As a result of the processing performed by the autonomous vehicle simulation system 401 as described above, data corresponding to simulated driver and vehicle behaviors and corresponding simulated dynamic vehicle trajectories can be produced. Ultimately, the autonomous vehicle simulation system 401 can be used to provide highly configurable simulated traffic trajectory information to a user or for configuration or analysis of a control system of an autonomous vehicle. In particular, the simulated traffic trajectory information can be used to create a virtual world where a control system for an autonomous vehicle can be analyzed, modified, and improved. The virtual world is configured to be identical (as possible) to the real world where vehicles are operated by human drivers. In other words, the simulated traffic trajectory information generated by the autonomous vehicle simulation system 401 is highly useful for configuring and analyzing the control systems of an autonomous vehicle. It will be apparent to those of ordinary skill in the art that the autonomous vehicle simulation system 401 and the simulated traffic trajectory information described and claimed herein can be implemented, configured, processed, and used in a variety of other applications and systems as well.

Referring again to FIGS. 4 and 5, the autonomous vehicle simulation system 401 can be configured to include executable modules developed for execution by a data processor 471 in a computing environment of the autonomous vehicle simulation system 401 and the dynamic vehicle simulation module 420 therein. In the example embodiment, the dynamic vehicle simulation module 420 can be configured to include the plurality of executable modules as described above. A data storage device or memory 472 can also be provided in the autonomous vehicle simulation system 401 of an example embodiment. The memory 472 can be implemented with standard data storage devices (e.g., flash memory, DRAM, SIM cards, or the like) or as cloud storage in a networked server. In an example embodiment, the memory 472 can be used to store the set of dynamic vehicle configuration data 408 as described above. In various example embodiments, the set of dynamic vehicle configuration data 408 can be configured to simulate more than the typical driving behaviors. To simulate an environment that is identical to the real world as much as possible, the dynamic vehicle configuration data 408 can represent typical driving behaviors, which represent average drivers. Additionally, the dynamic vehicle configuration data 408 can also represent atypical driving behaviors. In most cases, the trajectories corresponding to the plurality of simulated dynamic vehicles include typical and atypical driving behaviors. As a result, autonomous vehicle motion planners can be stimulated by the autonomous vehicle simulation system 401 using trajectories generated to correspond to the driving behaviors of polite and impolite drivers as well as patient and impatient drivers in the virtual world. In all, the simulated dynamic vehicles can be configured with data representing driving behaviors that are as varied as possible.

FIG. 6 illustrates the 3D autonomous vehicle simulation module 430, the autonomous vehicle analytics module 450, and the autonomous vehicle motion recording and playback module 460 of the autonomous vehicle simulation system 401 of an example embodiment. The 3D autonomous vehicle simulation module 430, the autonomous vehicle analytics module 450, and the autonomous vehicle motion recording and playback module 460 can be executed by a data processor 471 of the autonomous vehicle simulation system 401. As shown in FIGS. 2 and 6, the 3D autonomous vehicle simulation module 430 can model or simulate the operation and behavior of the real world autonomous vehicle 230 based on the autonomous vehicle control messages received from the autonomous vehicle control module 340 of the autonomous vehicle system 301. In an example embodiment, the 3D autonomous vehicle simulation module 430 can include a real-time physics engine to simulate the maneuvers of the real world autonomous vehicle 230 based on the autonomous vehicle control messages. The 3D autonomous vehicle simulation module 430 can also include a lower level control system simulator to simulate the actions and effects of various real world autonomous vehicle 230 subsystems, such as throttle, brake, and steering subsystems. As a result, the 3D autonomous vehicle simulation module 430 can produce data indicative of the movement, behavior, and control system actions that would occur in a real world autonomous vehicle 230 given the autonomous vehicle control messages generated by the autonomous vehicle control module 340. This data can be retained by the autonomous vehicle simulation module 430 and processed by the autonomous vehicle analytics module 450. Additionally, the 3D autonomous vehicle simulation module 430 can obtain vehicle modeling data from the real world autonomous vehicle 230 or other source. The vehicle modeling data can include the type of vehicle, the characteristics of the vehicle control subsystems, the engine performance characteristics, and the like. The vehicle modeling data can be used by the autonomous vehicle simulation module 430 to more accurately and specifically model the particular characteristics and behavior of the specific real world autonomous vehicle 230 being used for the simulation. The vehicle modeling data can be received by the autonomous vehicle simulation module 430 as autonomous vehicle modeling data messages to facilitate the flexibility and modularity of the autonomous vehicle simulation system 401 of an example embodiment.

Referring still to FIG. 6, the autonomous vehicle analytics module 450 can be configured to collect analytics data, vehicle state information, timing and configuration information, and recorded vehicle motion and behavior data related to the performance of the autonomous vehicle system 301 with the control module 340 and motion planner 330 therein. During the execution of a simulation scenario, the autonomous vehicle analytics module 450 can collect the analytics data and vehicle state information and generate additional metrics or analytics data corresponding to the analysis of the autonomous vehicle control messages generated by the autonomous vehicle system 301 and/or the motion planning module 330 therein. The analytics data and vehicle state information can be stored as autonomous vehicle analytics and recording data 409 in a memory device or system 472 of the autonomous vehicle simulation system 401. The autonomous vehicle analytics module 450 can perform an analysis of the received autonomous vehicle control messages to determine the validity and appropriateness of the control messages under the circumstances presented by the simulated map data and the simulated perception data as produced by the autonomous vehicle simulation system 401. In this manner, the autonomous vehicle analytics module 450 can analyze the performance of the autonomous vehicle system 301 under various simulation scenarios and retain analytics data for further analysis by technicians.

Referring still to FIG. 6, the autonomous vehicle motion recording and playback module 460 of the autonomous vehicle simulation system 401 can be configured to obtain and/or generate vehicle motion recording data corresponding to the movement and behavior of the simulated real world autonomous vehicle 230 and the autonomous vehicle control messages output from the autonomous vehicle system 301. The vehicle motion recording data can be stored as autonomous vehicle analytics and recording data 409 in a memory device or system 472 of the autonomous vehicle simulation system 401. The autonomous vehicle motion recording and playback module 460 can further enable the playback of the recorded vehicle motion data to highlight or isolate the analysis of the performance of the control module 340 and motion planner 330 in various simulated driving and traffic scenarios. The autonomous vehicle motion recording and playback module 460 can further allow the modification of the motion planner 330 and a restart of the simulation at any point in a test scenario using the recorded vehicle motion data. The vehicle motion recording data can capture the motion and behavior of the simulated real world autonomous vehicle 230 as controlled using the autonomous vehicle control messages generated by the autonomous vehicle system 301. The vehicle motion recording data can include data corresponding to the map data and perception data synchronized with the associated autonomous vehicle control messages. As a result, the vehicle motion recording data can record a time sequenced set of map data, perception data and corresponding vehicle control messages produced by the autonomous vehicle system 301 and/or the motion planning module 330 therein. Thus, the autonomous vehicle system 301 can be stimulated by the autonomous vehicle simulation system 401 with specifically configured inputs and the resulting output produced by the autonomous vehicle system 301 can be analyzed, recorded, and validated. Moreover, the vehicle motion recording data can be retained and played back to conduct further analysis of the operation of the autonomous vehicle system 301 and the motion planning module or motion planner 330 therein. Thus, the autonomous vehicle simulation system 401 can provide a full simulation environment to test the operation and performance of an autonomous vehicle system 301 and/or the motion planning module 330 and control module 340 therein. The map data and perception data provided as inputs to the autonomous vehicle system 301 can be fully configured and simulated. The outputs produced by the autonomous vehicle system 301 under various simulation scenarios can be retained, analyzed, and replayed to fully exercise, configure, and validate the operation of the autonomous vehicle system 301.

Referring now to FIG. 7, a flow diagram illustrates an example embodiment of a system and method 1000 for autonomous vehicle simulation. The example embodiment can be configured for: receiving map data corresponding to a real world driving environment (processing block 1010); obtaining perception data and configuration instructions and data including pre-defined parameters and executables defining a specific driving behavior for each of a plurality of simulated dynamic vehicles (processing block 1020); generating simulated perception data for each of the plurality of simulated dynamic vehicles based on the map data, the perception data, and the configuration instructions and data (processing block 1030); receiving vehicle control messages from an autonomous vehicle control system (processing block 1040); and simulating the operation and behavior of a real world autonomous vehicle based on the vehicle control messages received from the autonomous vehicle control system (processing block 1050);

FIG. 8 shows a diagrammatic representation of a machine in the example form of a computing system 700 within which a set of instructions when executed and/or processing logic when activated may cause the machine to perform any one or more of the methodologies described and/or claimed herein. In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of a server or a client machine in server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a personal computer (PC), a laptop computer, a tablet computing system, a Personal Digital Assistant (PDA), a cellular telephone, a smartphone, a web appliance, a set-top box (STB), a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) or activating processing logic that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” can also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions or processing logic to perform any one or more of the methodologies described and/or claimed herein.

The example computing system 700 can include a data processor 702 (e.g., a System-on-a-Chip (SoC), general processing core, graphics core, and optionally other processing logic) and a memory 704, which can communicate with each other via a bus or other data transfer system 706. The mobile computing and/or communication system 700 may further include various input/output (I/O) devices and/or interfaces 710, such as a touchscreen display, an audio jack, a voice interface, and optionally a network interface 712. In an example embodiment, the network interface 712 can include one or more radio transceivers configured for compatibility with any one or more standard wireless and/or cellular protocols or access technologies (e.g., 2nd (2G), 2.5, 3rd (3G), 4th (4G) generation, and future generation radio access for cellular systems, Global System for Mobile communication (GSM), General Packet Radio Services (GPRS), Enhanced Data GSM Environment (EDGE), Wideband Code Division Multiple Access (WCDMA), LTE, CDMA2000, WLAN, Wireless Router (WR) mesh, and the like). Network interface 712 may also be configured for use with various other wired and/or wireless communication protocols, including TCP/IP, UDP, SIP, SMS, RTP, WAP, CDMA, TDMA, UMTS, UWB, WiFi, WiMax, Bluetooth™, IEEE 802.11x, and the like. In essence, network interface 712 may include or support virtually any wired and/or wireless communication and data processing mechanisms by which information/data may travel between a computing system 700 and another computing or communication system via network 714.

The memory 704 can represent a machine-readable medium on which is stored one or more sets of instructions, software, firmware, or other processing logic (e.g., logic 708) embodying any one or more of the methodologies or functions described and/or claimed herein. The logic 708, or a portion thereof, may also reside, completely or at least partially within the processor 702 during execution thereof by the mobile computing and/or communication system 700. As such, the memory 704 and the processor 702 may also constitute machine-readable media. The logic 708, or a portion thereof, may also be configured as processing logic or logic, at least a portion of which is partially implemented in hardware. The logic 708, or a portion thereof, may further be transmitted or received over a network 714 via the network interface 712. While the machine-readable medium of an example embodiment can be a single medium, the term “machine-readable medium” should be taken to include a single non-transitory medium or multiple non-transitory media (e.g., a centralized or distributed database, and/or associated caches and computing systems) that store the one or more sets of instructions. The term “machine-readable medium” can also be taken to include any non-transitory medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the various embodiments, or that is capable of storing, encoding or carrying data structures utilized by or associated with such a set of instructions. The term “machine-readable medium” can accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media.

The Abstract of the Disclosure is provided to allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus, the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment. 

What is claimed is:
 1. A system comprising: a data processor; a map data simulation module, executable by the data processor, and configured to receive map data corresponding to a real world driving environment; a dynamic vehicle simulation module, executable by the data processor, and configured to obtain perception data and configuration instructions and data including pre-defined parameters and executables, wherein the configuration instructions and data define a specific driving behavior for each of a plurality of simulated dynamic vehicles, generate simulated perception data for each of the plurality of simulated dynamic vehicles based on the map data, the perception data, and the configuration instructions and data, generate a target position, speed, and heading for each of the plurality of simulated dynamic vehicles at a specific point in time using the simulated perception data and the configuration instructions and data, generate, for each of the plurality of simulated dynamic vehicles, a trajectory to transition the vehicle from its current position, speed, and heading to the target position, speed, and heading, and provide, for each of the generated trajectories, simulated perception data messages to an autonomous vehicle perception data processing module; and an autonomous vehicle simulation module, executable by the data processor, and configured to receive vehicle control messages from an autonomous vehicle control system, and simulate the operation and behavior of a real world autonomous vehicle based on the vehicle control messages received from the autonomous vehicle control system.
 2. The system of claim 1 including an autonomous vehicle analytics module configured to collect and generate analytics data and vehicle state information corresponding to an analysis of the vehicle control messages received from the autonomous vehicle control system.
 3. The system of claim 1 including an autonomous vehicle motion recording and playback module configured to obtain and generate vehicle motion recording data corresponding to the movement and behavior of the simulated real world autonomous vehicle and the vehicle control messages received from the autonomous vehicle control system.
 4. The system of claim 1 wherein the configuration instructions and data represent at least one simulated dynamic vehicle with an aggressive driving behavior and at least one simulated dynamic vehicle with a conservative driving behavior.
 5. The system of claim 1 wherein the dynamic vehicle simulation module uses a rule based process and corresponding data structures to generate the target position, speed, and heading corresponding to the specific behavior of each simulated dynamic vehicle based on the configuration instructions and data corresponding to each simulated dynamic vehicle.
 6. The system of claim 1 wherein the autonomous vehicle simulation module is configured to receive vehicle modeling data representing characteristics of the real world autonomous vehicle being simulated.
 7. The system of claim 1 wherein the vehicle control messages are used for analyzing a control system of an autonomous vehicle.
 8. A method comprising receiving map data corresponding to a real world driving environment; obtaining perception data and configuration instructions and data including pre-defined parameters and executables, wherein the configuration instructions and data define a specific driving behavior for each of a plurality of simulated dynamic vehicles; generating simulated perception data for each of the plurality of simulated dynamic vehicles based on the map data, the perception data, and the configuration instructions and data; generating a target position, speed, and heading for each of the plurality of simulated dynamic vehicles at a specific point in time using the simulated perception data and the configuration instructions and data; generating, for each of the plurality of simulated dynamic vehicles, a trajectory to transition the vehicle from its current position, speed, and heading to the target position, speed, and heading; providing, for each of the generated trajectories, simulated perception data messages to an autonomous vehicle perception data processing module; receiving vehicle control messages from an autonomous vehicle control system; and simulating the operation and behavior of a real world autonomous vehicle based on the vehicle control messages received from the autonomous vehicle control system.
 9. The method of claim 8 including collecting recorded motion data related to the performance of the autonomous vehicle control system within the simulation.
 10. The method of claim 8 including enabling playback of vehicle motion recording data corresponding to the movement and behavior of the simulated real world autonomous vehicle and the vehicle control messages received from the autonomous vehicle control system.
 11. The method of claim 8 wherein the configuration instructions and data represent at least one simulated dynamic vehicle with a specific driving behavior exhibited by steep acceleration and deceleration rates.
 12. The method of claim 8 including receiving vehicle modeling data representing characteristics of the real world autonomous vehicle being simulated, the vehicle modeling data including a type of vehicle, and characteristics of a vehicle control subsystem.
 13. The method of claim 8 including using the vehicle control messages to analyze a control system of an autonomous vehicle and determining the validity and appropriateness of the vehicle control messages under the circumstances presented by the simulation.
 14. The method of claim 8, wherein the configuration instructions and data represent at least one simulated dynamic vehicle with a specific driving behavior exhibited by maintenance of a greater distance from other neighboring vehicles.
 15. The method of claim 8, wherein the target position, speed, and heading are generated using a rule-based process and data structures corresponding to the rule-based process.
 16. A non-transitory machine-useable storage medium embodying instructions which, when executed by a machine, cause the machine to: receive map data corresponding to a real world driving environment; obtain perception data and configuration instructions and data including pre-defined parameters and executables, wherein the configuration instructions and data define a specific driving behavior for each of a plurality of simulated dynamic vehicles; generate simulated perception data for each of the plurality of simulated dynamic vehicles based on the map data, the perception data, and the configuration instructions and data; generate a target position, speed, and heading for each of the plurality of simulated dynamic vehicles at a specific point in time using the simulated perception data and the configuration instructions and data; generate, for each of the plurality of simulated dynamic vehicles, a trajectory to transition the vehicle from its current position, speed, and heading to the target position, speed, and heading; provide, for each of the generated trajectories, simulated perception data messages to an autonomous vehicle perception data processing module; receive vehicle control messages from an autonomous vehicle control system; and simulate the operation and behavior of a real world autonomous vehicle based on the vehicle control messages received from the autonomous vehicle control system.
 17. The non-transitory machine-useable storage medium of claim 16 embodying instructions which, when executed by a machine, cause the machine to analyze the vehicle control messages received from the autonomous vehicle control system.
 18. The non-transitory machine-useable storage medium of claim 16 embodying instructions which, when executed by a machine, cause the machine to retain vehicle motion recording data and corresponding vehicle control messages received from the autonomous vehicle control system.
 19. The non-transitory machine-useable storage medium of claim 16, wherein the configuration instructions and data represent at least one simulated dynamic vehicle with a specific driving behavior exhibited by frequent lane changes.
 20. The non-transitory machine-useable storage medium of claim 16 embodying instructions which, when executed by a machine, cause the machine to receive vehicle modeling data representing characteristics of the real world autonomous vehicle being simulated, the vehicle modeling data including characteristics of a vehicle control subsystem. 